Queues are a commonly occurring feature in data processing systems as well as daily life. When there are more things that can be done with available resources, a queue is a commonly used mechanism to sequence the demand.
To begin with a daily life example, people at a theme park routinely form queues to experience a ride or attraction. The capacity of the ride or attraction is often less than the number of people demanding a use of that capacity. Consequently, arriving people take a position in a queue and await their turn to experience the ride or attraction.
Similarly, in a data processing system, a queue is useful for arranging the processes that are awaiting the use of the limited computing resources in the data processing system. Hereinafter, a reference to a “member” can be interpreted as a reference to a person when the scenario or embodiment is applied to a human circumstance, such as in the example of the theme park, and as a reference to a thread, a process, or generally a consumer of a resource in a data processing system when the scenario or embodiment is applied to a data processing system circumstance, such as in the example of the processes using a computing resource (process option) in the data processing system.
Hereinafter, a “sequence” or a “sequence of execution” can similarly be interpreted as a reference to an ordering of human activities or an ordering of computer processes depending on the circumstances of the scenario or embodiment.
Hereinafter, a “process option” can similarly be interpreted as a reference to a human activity, a process available in a data processing system, or a resource in a data processing system, depending on the circumstances of the scenario or embodiment.
A variety of ways exists in which to arrange or order the members for using one or more process options. For example, a first-in-first-out (FIFO) allows waiting members to be queued in the order of their arrival, i.e., in the order in which they presented their demand for the limited resource. A priority-based queuing technique queues members based on their priorities. A higher priority member is queued ahead of a lower priority member, for using the process option before the lower priority member. Many other methods for ordering members for using one or more process options are well known.
In a converse way, the queuing process can also be viewed as a sequencing of process options for a member to use. In other words, a queuing process can also be used to create a sequence in which a member will use a given set of process options.
Often, it is not a single process option that a member uses. Frequently, several members will want to use several process options in some order or sequence. For example, a group of people may want to go on five different rides at the park in some order. As another example, each of one thousand threads may want to use several hardware and software components of a data processing system in some sequence.